list p=16F84A
#include "p16F84A.inc"
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC

     org 0
     goto INIT

INIT:
     bcf STATUS,5       ;bank0
     clrf PORTA         ;initialisation des port A et B
     clrf PORTB
     bsf STATUS,5       ;bank1
     movlw B'10101000'  ;bit7:dsaction du pull-up//bit5:TMR0 en
     movwf OPTION_REG   ;mode compteur//bit4:comptage actif sur front montant
     movlw 0x1F
     movwf TRISA        ;portA en entre
     clrf TRISB         ;portB en sortie, bit7:MSB, bit0:LSB
     movlw 0x80
     movwf PORTB        ;Us=0V (sortie du DAC)
     
     goto DEBUT

DEBUT:
     clrf TMR0          ;initialiser le compteur du timer
     
     ; test bit0 du portA
     btfss PORTA,0      ;choix de la forme crneau
     goto ETQ1          ;test bouton triangle
     goto CRENEAU
     
     ; test bit1 du portA
ETQ1:
          
     btfss PORTA,1      ;choix de la forme triangle
     goto ETQ2          ;test bouton sinus
     goto TRIANGLE
     
       
     ; test bit2 du portA
ETQ2:
          
     btfss PORTA,2      ;choix de la forme sinus
     goto ETQ3          ;test bouton rampe
     goto SINUS
       
         
     ; test bit3 du portA
ETQ3:
          
     btfss PORTA,3      ;choix de la forme rampe
     goto DEBUT         ;tous les boutons sont au repos
     goto RAMPE
     
     ; les sous programmes des fonctions  gnrer

CRENEAU:
     movlw 0xFF
     btfss TMR0,6
     clrw
     movwf PORTB
     goto CRENEAU
     
TRIANGLE:
     movlw 0x03
     movwf PCLATH
loop1:
     movlw B'01111111'  ;masque
     andwf TMR0,w
     call TB_triangle
     movwf PORTB
     goto loop1
     
SINUS:
     movlw 0x02
     movwf PCLATH
loop2:
     movlw B'01111111'  ;masque
     andwf TMR0,w
     call TB_sinus
     movwf PORTB
     goto loop2     
     
RAMPE:
     movlw 0x01
     movwf PCLATH
loop3:
     movlw B'01111111'  ;masque
     andwf TMR0,w
     call TB_rampe
     movwf PORTB
     goto loop3    
     
     org 0x0100
TB_rampe
	addwf PCL , f
	retlw D'255'
	retlw D'253'
	retlw D'251'
	retlw D'249'
	retlw D'247'
	retlw D'245'
	retlw D'243'
	retlw D'241'
	retlw D'239'
	retlw D'237'
	retlw D'235'
	retlw D'233'
	retlw D'231'
	retlw D'229'
	retlw D'227'
	retlw D'225'
	retlw D'223'
	retlw D'221'
	retlw D'219'
	retlw D'217'
	retlw D'215'
	retlw D'213'
	retlw D'211'
	retlw D'209'
	retlw D'207'
	retlw D'205'
	retlw D'203'
	retlw D'201'
	retlw D'199'
	retlw D'197'
	retlw D'195'
	retlw D'193'
	retlw D'191'
	retlw D'189'
	retlw D'187'
	retlw D'185'
	retlw D'183'
	retlw D'181'
	retlw D'179'
	retlw D'177'
	retlw D'175'
	retlw D'173'
	retlw D'171'
	retlw D'169'
	retlw D'167'
	retlw D'165'
	retlw D'163'
	retlw D'161'
	retlw D'159'
	retlw D'157'
	retlw D'155'
	retlw D'153'
	retlw D'151'
	retlw D'149'
	retlw D'147'
	retlw D'145'
	retlw D'143'
	retlw D'141'
	retlw D'139'
	retlw D'137'
	retlw D'135'
	retlw D'133'
	retlw D'131'
	retlw D'129'
	retlw D'126'
	retlw D'124'
	retlw D'122'
	retlw D'120'
	retlw D'118'
	retlw D'116'
	retlw D'114'
	retlw D'112'
	retlw D'110'
	retlw D'108'
	retlw D'106'
	retlw D'104'
	retlw D'102'
	retlw D'100'
	retlw D'98'
	retlw D'96'
	retlw D'94'
	retlw D'92'
	retlw D'90'
	retlw D'88'
	retlw D'86'
	retlw D'84'
	retlw D'82'
	retlw D'80'
	retlw D'78'
	retlw D'76'
	retlw D'74'
	retlw D'72'
	retlw D'70'
	retlw D'68'
	retlw D'66'
	retlw D'64'
	retlw D'62'
	retlw D'60'
	retlw D'58'
	retlw D'56'
	retlw D'54'
	retlw D'52'
	retlw D'50'
	retlw D'48'
	retlw D'46'
	retlw D'44'
	retlw D'42'
	retlw D'40'
	retlw D'38'
	retlw D'36'
	retlw D'34'
	retlw D'32'
	retlw D'30'
	retlw D'28'
	retlw D'26'
	retlw D'24'
	retlw D'22'
	retlw D'20'
	retlw D'18'
	retlw D'16'
	retlw D'14'
	retlw D'12'
	retlw D'10'
	retlw D'8'
	retlw D'6'
	retlw D'4'
	retlw D'2'
	retlw D'0'

     org 0x0200 ; adresse de dbut de la table
TB_sinus
	addwf PCL , f
	retlw D'128'
	retlw D'134'
	retlw D'140'
	retlw D'146'
	retlw D'152'
	retlw D'158'
	retlw D'165'
	retlw D'170'
	retlw D'176'
	retlw D'182'
	retlw D'188'
	retlw D'193'
	retlw D'198'
	retlw D'203'
	retlw D'208'
	retlw D'213'
	retlw D'218'
	retlw D'222'
	retlw D'226'
	retlw D'230'
	retlw D'234'
	retlw D'237'
	retlw D'240'
	retlw D'243'
	retlw D'245'
	retlw D'248'
	retlw D'250'
	retlw D'251'
	retlw D'253'
	retlw D'254'
	retlw D'254'
	retlw D'255'
	retlw D'255'
	retlw D'255'
	retlw D'254'
	retlw D'254'
	retlw D'253'
	retlw D'251'
	retlw D'250'
	retlw D'248'
	retlw D'245'
	retlw D'243'
	retlw D'240'
	retlw D'237'
	retlw D'234'
	retlw D'230'
	retlw D'226'
	retlw D'222'
	retlw D'218'
	retlw D'213'
	retlw D'208'
	retlw D'203'
	retlw D'198'
	retlw D'193'
	retlw D'188'
	retlw D'182'
	retlw D'176'
	retlw D'170'
	retlw D'165'
	retlw D'158'
	retlw D'152'
	retlw D'146'
	retlw D'140'
	retlw D'134'
	retlw D'128'
	retlw D'121'
	retlw D'115'
	retlw D'109'
	retlw D'103'
	retlw D'97'
	retlw D'90'
	retlw D'85'
	retlw D'79'
	retlw D'73'
	retlw D'67'
	retlw D'62'
	retlw D'57'
	retlw D'52'
	retlw D'47'
	retlw D'42'
	retlw D'37'
	retlw D'33'
	retlw D'29'
	retlw D'25'
	retlw D'21'
	retlw D'18'
	retlw D'15'
	retlw D'12'
	retlw D'10'
	retlw D'7'
	retlw D'5'
	retlw D'4'
	retlw D'2'
	retlw D'1'
	retlw D'1'
	retlw D'0'
	retlw D'0'
	retlw D'0'
	retlw D'1'
	retlw D'1'
	retlw D'2'
	retlw D'4'
	retlw D'5'
	retlw D'7'
	retlw D'10'
	retlw D'12'
	retlw D'15'
	retlw D'18'
	retlw D'21'
	retlw D'25'
	retlw D'29'
	retlw D'33'
	retlw D'37'
	retlw D'42'
	retlw D'47'
	retlw D'52'
	retlw D'57'
	retlw D'62'
	retlw D'67'
	retlw D'73'
	retlw D'79'
	retlw D'85'
	retlw D'90'
	retlw D'97'
	retlw D'103'
	retlw D'109'
	retlw D'115'
	retlw D'121'

	org 0x0300 ; adresse de dbut de la table    
TB_triangle
	addwf PCL , f
	retlw D'255'
	retlw D'251'
	retlw D'247'
	retlw D'243'
	retlw D'239'
	retlw D'235'
	retlw D'231'
	retlw D'227'
	retlw D'223'
	retlw D'219'
	retlw D'215'
	retlw D'211'
	retlw D'207'
	retlw D'203'
	retlw D'199'
	retlw D'195'
	retlw D'191'
	retlw D'187'
	retlw D'183'
	retlw D'179'
	retlw D'175'
	retlw D'171'
	retlw D'167'
	retlw D'163'
	retlw D'159'
	retlw D'155'
	retlw D'151'
	retlw D'147'
	retlw D'143'
	retlw D'139'
	retlw D'135'
	retlw D'131'
	retlw D'128'
	retlw D'124'
	retlw D'120'
	retlw D'116'
	retlw D'112'
	retlw D'108'
	retlw D'104'
	retlw D'100'
	retlw D'96'
	retlw D'92'
	retlw D'88'
	retlw D'84'
	retlw D'80'
	retlw D'76'
	retlw D'72'
	retlw D'68'
	retlw D'64'
	retlw D'60'
	retlw D'56'
	retlw D'52'
	retlw D'48'
	retlw D'44'
	retlw D'40'
	retlw D'36'
	retlw D'32'
	retlw D'28'
	retlw D'24'
	retlw D'20'
	retlw D'16'
	retlw D'12'
	retlw D'8'
	retlw D'4'
	retlw D'0'
	retlw D'4'
	retlw D'8'
	retlw D'12'
	retlw D'16'
	retlw D'20'
	retlw D'24'
	retlw D'28'
	retlw D'32'
	retlw D'36'
	retlw D'40'
	retlw D'44'
	retlw D'48'
	retlw D'52'
	retlw D'56'
	retlw D'60'
	retlw D'64'
	retlw D'68'
	retlw D'72'
	retlw D'76'
	retlw D'80'
	retlw D'84'
	retlw D'88'
	retlw D'92'
	retlw D'96'
	retlw D'100'
	retlw D'104'
	retlw D'108'
	retlw D'112'
	retlw D'116'
	retlw D'120'
	retlw D'124'
	retlw D'128'
	retlw D'131'
	retlw D'135'
	retlw D'139'
	retlw D'143'
	retlw D'147'
	retlw D'151'
	retlw D'155'
	retlw D'159'
	retlw D'163'
	retlw D'167'
	retlw D'171'
	retlw D'175'
	retlw D'179'
	retlw D'183'
	retlw D'187'
	retlw D'191'
	retlw D'195'
	retlw D'199'
	retlw D'203'
	retlw D'207'
	retlw D'211'
	retlw D'215'
	retlw D'219'
	retlw D'223'
	retlw D'227'
	retlw D'231'
	retlw D'235'
	retlw D'239'
	retlw D'243'
	retlw D'247'
	retlw D'251'

	END